package printfileformat;

import java.io.File;

public class Print {

	 StringBuilder sb=new StringBuilder();
	
	 public StringBuilder getSb() {
		return sb;
	}

	public void setSb(StringBuilder sb) {
		this.sb = sb;
	}

	/**
     * 生成输出格式
     * @param name 输出的文件名或目录名
     * @param level 输出的文件名或者目录名所在的层次
     * @return 输出的字符串
     */
    public  String createPrintStr(String dirPath,String name, int level) {
            // 输出的前缀
            String printStr = "";
            // 按层次进行缩进
            printStr  = printStr + dirPath;
            printStr = printStr +"\\"+ name;
            this.sb.append(printStr);
            return printStr;
    }

    /**
     * 输出初始给定的目录
     * @param dirPath 给定的目录
     */
    public static int printDir(String dirPath){
            // 将给定的目录进行分割
            String[] dirNameList = dirPath.split("\\\\");
            // 设定文件level的base
            int fileLevel = dirNameList.length;
            // 按格式输出
//            for (int i = 0; i < dirNameList.length; i ++) {
//                    System.out.print(createPrintStr(dirNameList[i], i));
//            }
//            System.out.println();
            return fileLevel;
    }

    /**
     * 输出给定目录下的文件，包括子目录中的文件
     * @param dirPath 给定的目录
     */
    public  void readFile(String dirPath) {
            // 建立当前目录中文件的File对象
            File file = new File(dirPath);
            // 取得代表目录中所有文件的File对象数组
            File temp=file;
            int fileLevel=printDir(dirPath);
            System.out.println(dirPath);
            this.sb.append(dirPath);
            printFile(dirPath,temp,fileLevel);
            
            
    }
    
    public  void printFile(String dirPath,File temp,int fileLevel)
    {
    	if(temp.isDirectory())
        {
        	File[] list = temp.listFiles();
        	File file=temp;
        	for (int i = 0; i < list.length; i++) 
        	{
        		file=list[i];
        		if(file.isDirectory()){
        			System.out.println(this.createPrintStr(dirPath,file.getName(), fileLevel));
        			printFile((dirPath+"\\"+file.getName()),file,fileLevel+1);
        		}
        			
        		else
        			System.out.println(this.createPrintStr(dirPath,file.getName(), fileLevel));
        	}
        	
        }
    }
}
